#include "GlobalHeader.h"
#include "StdFIFO.h"

#define FIFOFILE "FIFO"
#define FIFOFILE2 "FIFO2"


void SignalHanlder(int sig)
{
    exit(1);
}

void RemoveFIFO()
{
    printf("退出删除FIFO：\n");

}
int main()
{
    // //创建有名管道
    // //600 只有文件创建者有权限
    // int ret = mkfifo("FIFO",S_IRUSR | S_IWUSR);
    // if(ret < 0)
    // {
    //     perror("mkfifo");
    // }
    // int ret2 = mkfifo("FIFO2",S_IRUSR | S_IWUSR);
    // if(ret2 < 0)
    // {
    //     perror("mkfifo");
    // }

    // int fd = open(FIFOFILE,O_RDONLY);
    // if(fd < 0)
    // {
    //     perror("open");
    //     return -1;
    // }
    // int fd2 = open(FIFOFILE2,O_WRONLY);
    // if(fd2 < 0)
    // {
    //     perror("open");
    //     return -1;
    // }
    // while(1)
    // {
    //     char msg[32] = {0};
    //     read(fd,msg,sizeof(msg));
    //     printf("read info: %s\n", msg);

    //     memset(msg,0,32);
    //     scanf("%[^\n]",msg);
    //     while(getchar() != '\n');
    //     write(fd2,msg,32);
    // }

    atexit(RemoveFIFO);
    signal(SIGINT,SignalHanlder);
    
    FIFO *f1 = InitFIFO(FIFOFILE,ReadOnly);
    FIFO *f2 = InitFIFO(FIFOFILE2,WriteOnly);

    while(1)
    {
        char msg[32] = {0};
        ReadFIFO(f1,msg,sizeof(msg));
        printf("read info: %s\n", msg);

        memset(msg,0,32);
        scanf("%[^\n]",msg);
        while(getchar() != '\n');

        WriteFIFO(f2,msg,32);
    }


    // close(f1);
    // close(f2);

    ClearFIFO(f1);
    ClearFIFO(f2);
    return 0;
}